/*
 * BARequest.java
 * classes : com.qim.basdk.cmd.request.BARequest
 * @author xuwei
 * V 1.0.0
 * Created at 2015年8月20日 上午9:36:14
 */
package com.langsheng.lsintell.cmd.request;

import com.langsheng.lsintell.cmd.LSBaseCommand;

/**
 * com.qim.basdk.cmd.request.LSRequest
 * <p>
 * 基础数据请求包
 *
 * @author xuwei
 *         <p>
 *         created at 2015年8月20日 上午9:36:14
 */
public abstract class LSRequest extends LSBaseCommand {
    public final static String TAG = "BACommandRequest";

    /**
     * 指令的序号
     */
    private static int cmdOrder = 0;

    /**
     * 指令发送的时间
     */
//    private long sendTime = 0;

    /**
     * 默认状态
     */
    public final static int CMD_DEFAULT = 0;
    /**
     * 指令发送中
     */
    public final static int CMD_SENDING = 1;
    /**
     * 指令发送成功
     */
    public final static int CMD_SENDOK = 2;
    /**
     * 指令发送失败
     */
    public final static int CMD_SENDFAILED = 3;
    /**
     * 指令已响应
     */
    public final static int CMD_RESPOSED = 4;
    /**
     * 指令状态,默认为默认值
     */
    private int status = CMD_DEFAULT;

    /**
     * 生成指令序号
     *
     * @return
     */
    private static int createCmdOrder() {
        if (cmdOrder >= Integer.MAX_VALUE) {
            cmdOrder = 0;
        }
        return cmdOrder++;
    }

    public abstract void createCmd();

    /**
     * 构造函数,设置指令序号
     */
    public LSRequest() {
        setCmdOrder(createCmdOrder());
        createCmd();
    }

    /**
     * 转化成byte数组
     */
    @Override
    public byte[] toBytes() {
        return super.toBytes();
    }

    /**
     * 转化为字符串形式数据
     */
    @Override
    public String toString() {
        return super.toString();
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}
